/**
 * build_project
 * <p>
 * Copyright 2014 cayden.cn, Inc. All rights reserved.
 *
 * @author Administrator
 * @date 2021-09-26 13:43
 */
package com.cayden.config.project.componets.db;

import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.List;
import java.util.Map;

/**
 *
 * @author cayden
 * @date 2021-09-26 13:43
 * @description 目前仅支持mysql多数据源连接
 */
@ConfigurationProperties(prefix = MultipleDataSourcesProperties.PREFIX)
@Getter
@Setter
@Slf4j
public class MultipleDataSourcesProperties {

    /**
     * 基础路径
     */
    public static final String PREFIX = "cayden.multiple";

    /**
     * 是否开启多数据源
     */
    public static final String ENABLE_KEY = PREFIX + ".enable";

    /**
     * 子环境系统path
     */
    public static final String SLAVE_PRO_PATH = "cayden.multiple.slaveConfig.slave";

    /**
     * 子环境权重path
     */
    public static final String SLAVE_WEIGHT_PATH = ".weight";

    /**
     * 默认关闭多数据源
     */
    private Boolean enable = false;

    /**
     * 默认时使用此驱动,后面再决定是否能够进行动态修改
     */
    private String driver = "com.mysql.cj.jdbc.Driver";

    /**
     * 默认初始连接数为 5
     * 可以动态修改
     */
    private Integer initialSize = 5;

    /**
     * 最小连接数
     */
    private Integer minIdle = 20;

    /**
     * 最大连接数
     */
    private Integer maxActive = 300;

    /**
     * 获取连接等待超时的时间
     */
    private Integer maxWait = 10000;

    /**
     * 主库连接url 这个地方需要用空格分割
     */
    private String masterConfig;

    /**
     * 从库配置,这个地方需要用空格分割
     */
    private List<String> slaveConfig;

    /**
     * 从库权重配置
     */
    private Map<String,Integer> slaveWeightConfig;

    /**
     * 为了兼容某些不想要从0开始的笨蛋！！！
     */
    private Boolean slaveIndexHasZeoStart = false;

}
